package cn.itsource.service;

import cn.itsource.pojo.bo.OrderToDriver;
import cn.itsource.pojo.domain.Order;
import cn.itsource.pojo.dto.OrderCreateDto;
import cn.itsource.pojo.vo.ExecuteOrderInfoForCustomerVO;
import cn.itsource.pojo.vo.ExecuteOrderInfoForDriverVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 订单表 服务类
 * </p>
 *
 * @author ????
 * @since 2024-06-29
 */
public interface IOrderService extends IService<Order> {

    /**
     * 创建订单
     *
     * @param dto
     * @return
     */
    String create(OrderCreateDto dto);

    /**
     * 拉取订单
     * @return
     */
    List<OrderToDriver> pullForCurrentDriver();
    /**
     * 取消订单
     * @param orderNo 订单号
     */

    void autoCancel(String orderNo);

    /**
     * 抢单
     * @param orderNo 订单号
     */
    void kill(String orderNo);

    /**
     * 查询订单是否被接单
     * @param orderNo
     * @return
     */
    Boolean isAccpet(String orderNo);

    /**
     * 加载乘客的订单
     * @return
     */
    ExecuteOrderInfoForCustomerVO pullInprocessForCurrentCustomer();

    /**
     * 加载司机的订单
     * @return
     */
    ExecuteOrderInfoForDriverVO pullInprocessForCurrentDriver();
    /**
     * ��到达代驾点
     * @param orderNo 订单号
     */
    void arrive(String orderNo);

    /**
     * 开始代驾
     * @param orderNo 订单号
     */
    void start(String orderNo);

    /**
     * 结束代架
     * @param orderNo 订单号
     */
    void endDriving(String orderNo);
}
